package com.ct.repository.commons;

import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * @author 飞哥
 * @date 2023-08-16$ 19:49$
 */
public interface IBaseService<T> extends ITransfterBaseService,IService<T> {
    String ID = "id";
    // 状态修改
    boolean updateStatus(Long id,String column,Integer value);
    boolean updateStatusStr(Long id,String column,String value);

    // 自增
    boolean increById(Long id, String column);
    boolean increById(Long id, String column, Integer num);
    boolean increById(List<Long> ids, String column);
    boolean increById(List<Long> ids, String column, Integer num);

    // 减去
    boolean decreById(Long id, String column);
    boolean decreById(Long id, String column, Integer num);
    boolean decreById(List<Long> ids, String column);
    boolean decreById(List<Long> ids, String column, Integer num);

    /**
     * 自增
     * @param updateColumn 更新行
     * @param whereColumn where条件列
     * @param whereVal where条件值
     * 如： update T set updateColumn = updateColumn + 1 where whereColumn = whereVal
     */
    boolean incre(String updateColumn, String whereColumn,Long whereVal);

    /**
     * 递减
     * @param updateColumn 更新行
     * @param whereColumn where条件列
     * @param whereVal where条件值
     * 如： update T set updateColumn = updateColumn - 1 where whereColumn = whereVal
     */
    boolean decre(String updateColumn, String whereColumn,Long whereVal);

    /**
     * 递增
     * @param updateColumn 更新行
     * @param whereColumn where条件列
     * @param whereVal where条件值
     * @param num 递减值
     * 如： update T set updateColumn = updateColumn - num where updateColumn >= num and whereColumn = whereVal
     */
    boolean decre(String updateColumn, String whereColumn,Long whereVal, Integer num);

    /**
     * 批量递减
     * @param updateColumn 更新行
     * @param whereColumn where条件列
     * @param whereVals where条件值
     * 如： update T set updateColumn = updateColumn - 1 where whereColumn = whereVal
     */
    boolean decre(String updateColumn, String whereColumn,List<Long> whereVals);

    /**
     * 复制
     * @param opid
     * @return
     */
    default Boolean copyData(Long opid){return false;}
}
